﻿package main

import "fmt"

func main() {
    var s1 []map[string]int  // s是一个切面，里面的元素是map
    s1 = make([]map[string]int, 5)  // 这个切片没有引用数组，需要make初始化
    s1[0] = make(map[string]int)  // 切片的每个元素都是map，都需要初始化
    s1[0]["k1"] = 10
    fmt.Println(s1)

    s2 := make([]map[string]int, 5)
    // 通过for循环，把切片里的每个map都进行初始化
    for i, _ := range s2 {
        s2[i] = make(map[string]int)
    }
    s2[0]["k1"] = 10
    s2[0]["k2"] = 20
    s2[1]["k3"] = 31
    fmt.Println(s2)

    s3 := make([]map[string]int, 5)
    // 每次用之前判断是否能有初始化，没有进先初始化在用
    if s3[3] == nil {
        s3[3] = make(map[string]int)
    }
    s3[3]["k3"] = 30
    fmt.Println(s3)
}
